//
//  ViewController.swift
//  ImageOptimize
//
//  Created by Chris on 2017/7/23.
//  Copyright © 2017年 chris. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    
    @IBOutlet weak var iconImgV: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //        iconImgV.image = UIImage(named: "icon")
        //        iconImgV.layer.cornerRadius = iconImgV.bounds.width * 0.5
        //        iconImgV.layer.masksToBounds = true
        
        iconImgV.image = optimizeImage(With: UIImage(named:"icon"), size: iconImgV.bounds.size, hasBorder: true, borderColor: UIColor.green, borderWidth: 5, isCircular: true)
    }
    
    
    
    /// 获取性能优化后的图片
    ///
    /// - Parameters:
    ///   - image: 需要处理的图片
    ///   - size: 图片显示的大小
    ///   - hasBorder: 是否显示边框(默认false)
    ///   - borderColor: 边框颜色(默认black)
    ///   - borderWidth: 边框宽度(默认1.0)
    ///   - isCircular: 是否为圆形(默认false)
    ///   - backgroundColor: 图片背景色(默认white)
    /// - Returns: 优化后的图片
    func optimizeImage(With image: UIImage?, size: CGSize, hasBorder: Bool = false, borderColor: UIColor = UIColor.black, borderWidth: CGFloat = 1.0, isCircular: Bool = false,backgroundColor: UIColor? = UIColor.white) -> UIImage? {
        
        guard let image = image else {
            return nil
        }
        // 绘制区域
        let rect = CGRect(origin: CGPoint(), size: size)
        
        // 开启core Graphic绘制, 在内存中开辟一个空间用于处理图片,获取图片Context
        // - size: 图片大小
        // - opaque: 图片是否不透明
        // - scale: 图片倍数, 设置0会根据设备自动调整@2x或者@3x
        UIGraphicsBeginImageContextWithOptions(size, true, 0)
        
        // 设置背景色填充, 图片圆角化后默认背景色为黑色
        backgroundColor?.setFill()
        UIRectFill(rect)
        
        // 创建贝塞尔路线, 用于圆角和边框
        let path = UIBezierPath(ovalIn: rect)
        if isCircular {
            // 绘制圆形
            if isCircular {
                path.addClip()
            }
            
        }
        // 图片在制定区域内绘制
        image.draw(in: rect)
        
        // 绘制边框
        if hasBorder {
            borderColor.setStroke()
            path.lineWidth = borderWidth
            path.stroke()
        }
        
        // 获取绘制后的图片
        let optimizeImage = UIGraphicsGetImageFromCurrentImageContext()
        // 关闭core Graphic绘制
        UIGraphicsEndImageContext()
        
        return optimizeImage
    }
}

